#include<bits/stdc++.h>
#define XH(i,a,b) for(int i=a;i<b;++i)
#define XXH(i,a,b) for(int i=a-1;i>=b;--i)
#define LL long long
using namespace std;
int tmpINT; string tmpSTRING; char tmpCHAR; double tmpDOUBLE; LL tmpLONGLONG;

vector<int> check(int n, int x, vector<int>v){
	multiset<int> s;
	vector<int>ret;
	XH(i , 0 , 2*n)s.insert(v[i]);
	XH(i , 0 , n){
		auto it = s.end();
		it--;
		int y = x - *it;
		s.erase(it);
		auto it1 = s.find(y);
		if(it1 == s.end()){
			return {};
		}
		ret.push_back(y);ret.push_back(x-y);
		x = max(x-y,y);
		s.erase(it1);
	}
	return ret;
}			

void solve(){
	int n;scanf("%d", &n);
	vector<int>v(2*n);
	XH(i , 0 , 2*n)scanf("%d", &v[i]);
	sort(v.begin(),v.end());
	XH(i , 0 , 2*n-1){
		tmpINT = v[i] + v[2*n-1];
		vector<int>ans = check(n,tmpINT,v);
		if(ans.size()){
			printf("Yes\n%d\n",tmpINT);			
			XH(j , 0 , n)printf("%d %d\n", ans[j*2],ans[j*2+1]);
			return;
		}
	}
	printf("No\n");
}

int main(){
    int t;scanf("%d", &t);
    XH(i , 0 , t){
    	solve();
    }

    return 0;
}
